본문으로 건너뛰기

Process

process란 실행 중인 프로그램을 뜻한다.

🧑🏻‍💻 process 종류


✅ Foreground process

  • 사용자가 볼 수 있는 공간에서 실행하는 progress

✅ Background process

  • 사용자가 볼 수 없는 공간에서 실행하는 progress
    → 사용자와 직접 상호작용하는 progress
    → 사용자와 상호작용하지 않는 progress (예: demon)

🧑🏻‍💻 process의 메모리 영역별 사용법


(1) 커널 영역에서의 process 사용법과 (2) 사용자 영역에서의 process 사용법을 나누어 생각한다.

커널 영역 사용자 영역

✅ process의 커널 영역 사용법

✏️ PCB (process 제어 블록)

  • process는 process 관련 정보를 저장하는 자료 구조인 PCB를 활용한다.

  • PCB는 process 생성 시 커널 영역에 생성되었다가, process 종료 시 폐기된다.

✏️ PCB가 담고 있는 대표적인 정보

  1. process ID (PID) 특정 process 식별 고유 번호

  2. 레지스터 값 process가 CPU를 다시 할당받을 때 필요한 작업 정보 보관 장소

  3. process 상태 (state)

    process 상태

    생성 상태 : PCB를 할당받은 상태
    준비 상태 : 자신의 차례를 기다리는 상태
    실행 상태 : CPU를 할당받아 실행 중인 상태
    대기 상태 : process가 입출력장치를 사용하는 상태
    종료 상태 : process가 종료된 상태

  4. CPU 스케줄링 정보 process가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보

  5. 메모리 정보 process가 어느 메모리 주소에 저장되어 있는지에 대한 정보 (페이지 테이블 정보)

  6. 사용 중인 파일과 입출력장치 정보

✅ process의 사용자 영역 사용법

사용자 영역은 코드, 데이터, 힙, 스택 등 영역으로 이루어 져있다.

✏️ 코드(텍스트) 영역

  • 기계어로 이루어진 명령어를 read-only 형태로 저장하는 영역

✏️ 데이터 영역

  • 프로그램이 실행되는 동안 유지할 데이터 저장 (ex. 전역 변수)

✏️ 힙 영역 (동적 할당 영역)

  • 개발자가 직접 할당할 수 있는 저장공간

✏️ 스택 영역 (동적 할당 영역)

  • 데이터가 일시적으로 저장되는 공간 (ex. 매개 변수, 지역 변수)

  • 힙 영역과 스택 영역은 동적 할당 영역이므로, 메모리 주소가 겹칠 수 있다. 이에 따라 힙은 낮은 주소 → 높은 주소, 스택은 높은 주소 → 낮은 주소로 할당된다.

🧑🏻‍💻 문맥 교환 (context switch)


✅ context

  • process 실행을 재개하기 위한 정보이다.

✅ context switch

  • context를 백업하고 복구하는 과정을 통해 여러 process가 끊임없이 빠르게 번갈아 가며 실행되는 것을 말한다.

    context switch

🧑🏻‍💻 process 계층구조


process 계층구조는 다중 process 시스템에서, 하나의 process가 자신과 같은 구조를 가진 process를 생성함으로써 만들어지는 계층구조이다.

process 계층 구조

✅ 부모 process

  • 새 process를 생성한 process를 의미한다.

  • fork 시스템 호출로 자신의 복사본을 자식 process로 생성한다. (부모 process의 자원을 상속)

✅ 자식 process

  • 부모 process에 의해 생성된 process

  • exec 시스템 호출로 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰며 process를 관리한다.


참고 자료

  • 혼자 공부하는 컴퓨터구조 + 운영체제